// #include "Encrypt/Encrypt.h"
#include "NetWorkProDefine.h"
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>

extern int h_errno;
void test_Encrypt();
int calculate_len(int);

int main(int argc, char** argv)
{
    // int datalen = atoi(argv[1]);
    // printf("len :%d\n", calculate_len(datalen));
    struct sockaddr_in addr;
    addr.sin_addr.s_addr = get_local_ip("enp2s0");
    printf("dw ip :%u\t%s\n", addr.sin_addr.s_addr, inet_ntoa(addr.sin_addr));
#if(DEMO_TYPE == 1)
#elif(DEMO_TYPE == 2)
    gethostbynames(argc, argv);
#else
    gethostbyaddrs(argc, argv);
    // test_Encrypt();
#endif
    return 0;
}

void test_Encrypt()
{
    printf("%s:%d\n", __FILE__, __LINE__);
    // char pSrc[] = "1234569876541";
    // int len = strlen(pSrc);
    // char *pCiphertext = NULL;
    // for (size_t i = 0; i < len; i++)
    // {
    //     printf("%d ", pSrc[i]);
    // }
    // printf("\n\n");
    
    // Encrypt(pSrc, &pCiphertext, len);
    // for (size_t i = 0; i < len; i++)
    // {
    //     printf("%d ", pCiphertext[i]);
    // }
    // printf("\n\n");

    // char* pPlaintext = NULL;
    // Decrypt(pCiphertext, &pPlaintext, len);
    // for (size_t i = 0; i < len; i++)
    // {
    //     printf("%d ", pPlaintext[i]);
    // }
    // printf("\n");

    // if(NULL != pCiphertext)
    // {
    //     free(pCiphertext);
    // }
    // if(NULL != pPlaintext)
    // {
    //     free(pPlaintext);
    // }
}

void test_encrypt()
{
    printf("%s:%s:%d\n", __FILE__, __FUNCTION__, __LINE__);
    // char pSrc[] = "原生木浆·柔软舒适";
    // int len = strlen(pSrc);
    // char *pCiphertext = NULL;
    // printf("src text :%s\n", pSrc);
    // encrypt(pSrc, len);
    // printf("clipher text :%s\n", pSrc);
    // encrypt(pSrc, len);
    // printf("plain text :%s\n", pSrc);
}

/*
X mod 512 = 448
*/
int calculate_len(int datalen)
{
    int mod = datalen % 512;
    return mod > 448 ? 512-mod+448 : 448-mod;
}